package top.javai.www.service;

import java.util.List;
import java.util.Map;


public interface CacheManager {
    /**
     * 执行这个方法是redis中set方法
     * @param key
     * @param value
     * @param expireSecond
     * @return
     */
    boolean set(String key, String value, long expireSecond);

    /**
     * 执行这个方法是从redis中获取数据
     * @param key
     * @return
     */
    String getFromRedis(String key);

    /**
     * 删除key
     * @return
     */
    boolean delKey(String key);

    /**
     * 获取一个自增的数据
     * @param key
     * @return
     */
    long getAutoIncrementId(String key);

    /**
     * 设置有效期
     * @param key
     * @param expireSecond
     * @return
     */
    boolean setExpire(String key, long expireSecond);

    /**
     * 通过setnx的方式存放数据
     * @param key
     * @param value
     * @param expireSecond
     * @return
     */
    boolean setNx(String key, String value, long expireSecond);

    /**
     * 先get 再set
     * @param key
     * @param value
     * @return
     */
    String getSet(String key, String value);

    /**
     * list的lpush
     * @param key
     * @param values
     * @return
     */
    long Lpush(String key, String[] values);

    /**
     * 从左边开始弹弹弹 弹走鱼尾纹
     * @param key
     * @return
     */
    String lPop(String key);


    List<String> lRange(String key, long start, long end);


    boolean hSet(String key, String field, String value);


    String hGet(String key, String field);


    boolean hDel(String key, String... field);


    boolean hMset(String key, Map<String, String> values);

    List hMget(String key, String... field);

    Map hGetAll(String key);

    Long sAdd(String key, String[] values);

    long sCard(String key);

    String sPop(String key);

}
